#ifndef BCORTHOGONALFLOWVELOCITYWATERDEPTH_HPP
#define BCORTHOGONALFLOWVELOCITYWATERDEPTH_HPP

#include "boundaryCondition.hpp"
#include "fieldMemberMacros.hpp"

namespace hms {

template<typename MeshType>
class OrthogonalFlowVelocity_waterdepth : public BoundaryCondition<MeshType>
{
public:
	using BaseType = BoundaryCondition<MeshType>;
	using Type = typename BaseType::Type;
	using BaseType::field;
	using BaseType::patch;

private:
	scalar m_vBoundary;
	V_FIELD_MEMBER;

public:
	OrthogonalFlowVelocity_waterdepth() = default;

	OrthogonalFlowVelocity_waterdepth(
		Field<MeshType>& d,
		const BoundaryPatch&, 
		const Field<MeshType>& v,
		scalar vBoundary
	);

	virtual void update() const override;

	auto vBoundary() const -> scalar;
	void vBoundary(scalar);

	V_FIELD_ACCESSORS
};

} // end namespace hms

#endif

